
namespace ShoppingCart.WebSite.Admin
{
    using System;
    using System.Configuration;
    using System.IO;
    using System.Web.UI;
    using Business.Logic;
    using Code;
    using DTO = Business.Entity;

    public partial class Linea : BasePage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Page.IsPostBack) return;
            CargarAccion();
        }

        protected void BtnGuardarClick(object sender, EventArgs e)
        {
            GuardarAccion();
        }

        private void CargarAccion()
        {
            var accion = Request.QueryString.Get("Accion");
            if (string.IsNullOrEmpty(accion))
                Response.Redirect("Lineas.aspx", true);

            switch (accion)
            {
                case "I":
                    litAccion.Text = @"INGRESAR";
                    break;
                case "M":
                    var idLinea = Convert.ToInt32(Request.QueryString.Get("idLinea"));
                    CargarLinea(idLinea);
                    litAccion.Text = @"MODIFICAR";
                    break;
            }
        }

        private void CargarLinea(int idLinea)
        {
            var entidad = LineaManager.Instancia.Obtener(idLinea);
			txtNombre.Text = entidad.Nombre;
			txtDescripcion.Text = entidad.Descripcion;
        }

        private void GuardarAccion()
        {
            var accion = Request.QueryString.Get("Accion");
            switch (accion)
            {
                case "I":
                    InsertarLinea();
                    break;
                case "M":
                    ModificarLinea();
                    break;
            }
        }

        private void InsertarLinea()
        {
            var extension = string.Empty;
            var ruta = ConfigurationManager.AppSettings["Linea"];
            var entidad = new DTO.Linea
            {
				Nombre = txtNombre.Text,
				Descripcion = txtDescripcion.Text,
				Imagen = string.Empty
            };
            if (fupImagen.HasFile)
            {
                extension = Path.GetExtension(fupImagen.PostedFile.FileName).ToLower();
                if (extension == ".jpg" || extension == ".gif" || extension == ".bmp" || extension == ".png")
                {
                    entidad.Imagen = ruta + "Linea{0}" + extension;
                }
            }
            try
            {
                var idLinea = LineaManager.Instancia.Agregar(entidad);
                if (fupImagen.HasFile)
                {
                    var rutaImagen = Request.MapPath(ruta) + "Linea" + idLinea + extension;
                    fupImagen.SaveAs(rutaImagen);
                }
                ClientScript.RegisterStartupScript(GetType(), "mostrar1", "alert('Registro grabado satisfactoriamente');window.location = 'Lineas.aspx';", true);
            }
            catch
            {
                litAccion.Text = GetMessage(@"No se pudo Modificar Linea, por favor intente de nuevo o más tarde.", MessageType.errormsg);
            }
        }

        private void ModificarLinea()
        {
            var idLinea = Convert.ToInt32(Request.QueryString.Get("idLinea"));
            var entidad = LineaManager.Instancia.Obtener(idLinea);
            
			entidad.Nombre = txtNombre.Text;
			entidad.Descripcion = txtDescripcion.Text;
            if (fupImagen.HasFile)
            {
                var extension = Path.GetExtension(fupImagen.PostedFile.FileName).ToLower();
                if (extension == ".jpg" || extension == ".gif" || extension == ".bmp" || extension == ".png")
                {
                    entidad.Imagen = ConfigurationManager.AppSettings["Linea"] + "Linea" + idLinea + extension;
                }
            }
            try
            {
                LineaManager.Instancia.Modificar(entidad);
                if (fupImagen.HasFile)
                {
                    var rutaImagen = Request.MapPath(entidad.Imagen);
                    fupImagen.SaveAs(rutaImagen);
                }
                ClientScript.RegisterStartupScript(GetType(), "mostrar2", "alert('Registro grabado satisfactoriamente');window.location = 'Lineas.aspx';", true);
            }
            catch
            {
                litAccion.Text = GetMessage(@"No se pudo Modificar Linea, por favor intente de nuevo o más tarde.", MessageType.errormsg);
            }
        }
    }
}
